#pragma once

#include <interface/msg/objects.hpp>

#include <unordered_map>
#include <vector>

using Objects = interface::msg::Objects;
using ObjectsSptr = std::shared_ptr<interface::msg::Objects>;

using Object = interface::msg::Object;
using ObjectSptr = std::shared_ptr<interface::msg::Object>;

using ObjectSptrVector = std::vector<ObjectSptr>;

using TimeSyncObject = std::unordered_map<std::string, ObjectSptrVector>;

using AssociatedObject = std::vector<std::pair<ObjectSptr, ObjectSptr>>;

using MultiAssociatedObject = std::unordered_multimap<ObjectSptr, ObjectSptrVector>;
